package cn.zhukelili.base;

/**
 * @description: 扩展后的H1悍马
 * @author: hhbeast
 * @since: 2018/7/29 14:38
 */
public class HummerH2Model extends HummerModel {
    //H2型号的悍马车鸣笛
    public void alarm() {
        System.out.println("悍马H2鸣笛...");
    }
    //引擎轰鸣声
    public void engineBoom() {
        System.out.println("悍马H2引擎声音是这样在...");
    }
    //汽车发动
    public void start() {
        System.out.println("悍马H2发动...");
    }
    //停车
    public void stop() {
        System.out.println("悍马H2停车...");
    }
    //开动起来
    public void run(){
        //先发动汽车
        this.start();
        //引擎开始轰鸣
        this.engineBoom();
        //然后就开始跑了，跑的过程中遇到一条狗挡路，就按喇叭
        this.alarm();
        //到达目的地就停车
        this.stop();
    }
}

/*
好了，程序编写到这里，已经发现问题了，两个实现类的run()方法都是完全相同的，那
这个run()方法的实现应该出现在抽象类，不应该在实现类上，抽象是所有子类的共性封装。
注意　在软件开发过程中，如果相同的一段代码复制过两次，就需要对设计产生怀疑，
架构师要明确地说明为什么相同的逻辑要出现两次或更多次。
 */